function Burgers_Exact_Solution
F = @(x) sin( pi*x ); dF = @(x) pi*cos( pi*x );
psi = @(x,t,xi) x - F( xi )*t - xi ;
dpsi = @(x,t,xi) - dF( xi )*t - 1 ;
N = 100;
NumGLP = 5;
t = 0 ; Step = 0;
T = 0.2 ;
dx=2/N;
N_T = 10; dt = T/N_T;
ureal_Bur=zeros(N,NumGLP);
x = linspace( 0.8+1/2*dx, 1.2-1/2*dx, N );
lambda=zeros(NumGLP);
    lambda(1) = -0.9061798459386639927976269;
    lambda(2) = -0.5384693101056830910363144;
    lambda(3) = 0;
    lambda(4) = 0.5384693101056830910363144;
    lambda(5) = 0.9061798459386639927976269;
%---------------
Xloc = zeros(N,NumGLP);
for i = 1:N
    for j = 1:NumGLP
        Xloc(i,j) = x(i) + 1/2*dx*lambda(j);
        %计算初值在每个积分点上的值
    end
end
%----------------------------
Output( x, 0, F( Xloc(:,3) ) )
for i=1:N_T
Step = Step + 1; t =t+dt;
U = Exact_Solution( Xloc(:,2), t ) ;
disp(t)
Output( x, t, U )
end
U = Exact_Solution(Xloc(:,1), t);
    %生成求解后的文件
    filename = 'final_data1001.txt'; % 文件名
    fid = fopen(filename, 'w'); % 创建新文件
    fprintf(fid, '%.4f ', x); % 写入x值
    fprintf(fid, '\n'); % 换行
    fprintf(fid, '%.4f ', U); % 写入U值
    fprintf(fid, '\n'); % 换行
    fclose(fid); % 关闭文件
U = Exact_Solution(Xloc(:,2), t);
    %生成求解后的文件
    filename = 'final_data1002.txt'; % 文件名
    fid = fopen(filename, 'w'); % 创建新文件
    fprintf(fid, '%.4f ', x); % 写入x值
    fprintf(fid, '\n'); % 换行
    fprintf(fid, '%.4f ', U); % 写入U值
    fprintf(fid, '\n'); % 换行
    fclose(fid); % 关闭文件
    U = Exact_Solution(Xloc(:,3), t);
    %生成求解后的文件
    filename = 'final_data1003.txt'; % 文件名
    fid = fopen(filename, 'w'); % 创建新文件
    fprintf(fid, '%.4f ', x); % 写入x值
    fprintf(fid, '\n'); % 换行
    fprintf(fid, '%.4f ', U); % 写入U值
    fprintf(fid, '\n'); % 换行
    fclose(fid); % 关闭文件
    U = Exact_Solution(Xloc(:,4), t);
    %生成求解后的文件
    filename = 'final_data1004.txt'; % 文件名
    fid = fopen(filename, 'w'); % 创建新文件
    fprintf(fid, '%.4f ', x); % 写入x值
    fprintf(fid, '\n'); % 换行
    fprintf(fid, '%.4f ', U); % 写入U值
    fprintf(fid, '\n'); % 换行
    fclose(fid); % 关闭文件
    U = Exact_Solution(Xloc(:,5), t);
    %生成求解后的文件
    filename = 'final_data1005.txt'; % 文件名
    fid = fopen(filename, 'w'); % 创建新文件
    fprintf(fid, '%.4f ', x); % 写入x值
    fprintf(fid, '\n'); % 换行
    fprintf(fid, '%.4f ', U); % 写入U值
    fprintf(fid, '\n'); % 换行
    fclose(fid); % 关闭文件
function U = Exact_Solution( x, t )
U = zeros( size( x ) );
for i = 1:N
xi = Newton( x(i), t );
U(i) = F(xi);
end
end

% 牛顿迭代
function xi = Newton( x, t )
K_Max = 10000000;
k = 1 ;
xi0 = x ;
tol = 1e-14 ;
r = 1 ;
while (r > tol && k <= K_Max)
xi = xi0 - psi( x, t, xi0 ) /dpsi( x, t, xi0 ) ;
r = abs ( xi - xi0 ) ;
xi0 = xi ;
k = k + 1 ;
end
end

% 画图
function Output( x, t, U )
plot ( x, U, 'r-o' )
axis ( [0, 2, -1, 1 ] )
title( ['t = ', num2str(t)] )
pause( 0.0005 )
end
end
